<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE DerivingStrategies #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE MagicHash #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# LANGUAGE NoImplicitPrelude #-}</span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE StandaloneDeriving #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE Trustworthy #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-unused-binds #-}</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- XXX -Wno-unused-binds stops us warning about unused constructors,</span><span>
</span><span id="line-10"></span><span class="hs-comment">-- but really we should just remove them if we don't want them</span><span>
</span><span id="line-11"></span><span>
</span><span id="line-12"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-13"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-14"></span><span class="hs-comment">-- Module      :  Foreign.C.Types</span><span>
</span><span id="line-15"></span><span class="hs-comment">-- Copyright   :  (c) The FFI task force 2001</span><span>
</span><span id="line-16"></span><span class="hs-comment">-- License     :  BSD-style (see the file libraries/base/LICENSE)</span><span>
</span><span id="line-17"></span><span class="hs-comment">--</span><span>
</span><span id="line-18"></span><span class="hs-comment">-- Maintainer  :  ffi@haskell.org</span><span>
</span><span id="line-19"></span><span class="hs-comment">-- Stability   :  provisional</span><span>
</span><span id="line-20"></span><span class="hs-comment">-- Portability :  portable</span><span>
</span><span id="line-21"></span><span class="hs-comment">--</span><span>
</span><span id="line-22"></span><span class="hs-comment">-- Mapping of C types to corresponding Haskell types.</span><span>
</span><span id="line-23"></span><span class="hs-comment">--</span><span>
</span><span id="line-24"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-25"></span><span>
</span><span id="line-26"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Foreign.C.Types</span><span>
</span><span id="line-27"></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-comment">-- * Representations of C types</span></span><span>
</span><span id="line-28"></span><span>          </span><span class="annot"><span class="hs-comment">-- $ctypes</span></span><span>
</span><span id="line-29"></span><span>
</span><span id="line-30"></span><span>          </span><span class="annot"><span class="hs-comment">-- ** #platform# Platform differences</span></span><span>
</span><span id="line-31"></span><span>          </span><span class="hs-comment">-- | This module contains platform specific information about types.</span><span>
</span><span id="line-32"></span><span>          </span><span class="hs-comment">-- __/As such, the types presented on this page reflect the/__</span><span>
</span><span id="line-33"></span><span>          </span><span class="hs-comment">-- __/platform on which the documentation was generated and may/__</span><span>
</span><span id="line-34"></span><span>          </span><span class="hs-comment">-- __/not coincide with the types on your platform./__</span><span>
</span><span id="line-35"></span><span>
</span><span id="line-36"></span><span>          </span><span class="annot"><span class="hs-comment">-- ** Integral types</span></span><span>
</span><span id="line-37"></span><span>          </span><span class="hs-comment">-- | These types are represented as @newtype@s of</span><span>
</span><span id="line-38"></span><span>          </span><span class="hs-comment">-- types in &quot;Data.Int&quot; and &quot;Data.Word&quot;, and are instances of</span><span>
</span><span id="line-39"></span><span>          </span><span class="hs-comment">-- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read',</span><span>
</span><span id="line-40"></span><span>          </span><span class="hs-comment">-- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable',</span><span>
</span><span id="line-41"></span><span>          </span><span class="hs-comment">-- 'Storable', 'Prelude.Bounded', 'Prelude.Real', 'Prelude.Integral'</span><span>
</span><span id="line-42"></span><span>          </span><span class="hs-comment">-- and 'Bits'.</span><span>
</span><span id="line-43"></span><span>          </span><span class="annot"><a href="Foreign.C.Types.html#CChar"><span class="hs-identifier">CChar</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>    </span><span class="annot"><a href="Foreign.C.Types.html#CSChar"><span class="hs-identifier">CSChar</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CUChar"><span class="hs-identifier">CUChar</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-44"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CShort"><span class="hs-identifier">CShort</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CUShort"><span class="hs-identifier">CUShort</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="Foreign.C.Types.html#CInt"><span class="hs-identifier">CInt</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>      </span><span class="annot"><a href="Foreign.C.Types.html#CUInt"><span class="hs-identifier">CUInt</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-45"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CLong"><span class="hs-identifier">CLong</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>    </span><span class="annot"><a href="Foreign.C.Types.html#CULong"><span class="hs-identifier">CULong</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-46"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CPtrdiff"><span class="hs-identifier">CPtrdiff</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CSize"><span class="hs-identifier">CSize</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>    </span><span class="annot"><a href="Foreign.C.Types.html#CWchar"><span class="hs-identifier">CWchar</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>    </span><span class="annot"><a href="Foreign.C.Types.html#CSigAtomic"><span class="hs-identifier">CSigAtomic</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-47"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CLLong"><span class="hs-identifier">CLLong</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CULLong"><span class="hs-identifier">CULLong</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CBool"><span class="hs-identifier">CBool</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-48"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CIntPtr"><span class="hs-identifier">CIntPtr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="Foreign.C.Types.html#CUIntPtr"><span class="hs-identifier">CUIntPtr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CIntMax"><span class="hs-identifier">CIntMax</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CUIntMax"><span class="hs-identifier">CUIntMax</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span>          </span><span class="annot"><span class="hs-comment">-- ** Numeric types</span></span><span>
</span><span id="line-51"></span><span>          </span><span class="hs-comment">-- | These types are represented as @newtype@s of basic</span><span>
</span><span id="line-52"></span><span>          </span><span class="hs-comment">-- foreign types, and are instances of</span><span>
</span><span id="line-53"></span><span>          </span><span class="hs-comment">-- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read',</span><span>
</span><span id="line-54"></span><span>          </span><span class="hs-comment">-- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable' and</span><span>
</span><span id="line-55"></span><span>          </span><span class="hs-comment">-- 'Storable'.</span><span>
</span><span id="line-56"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CClock"><span class="hs-identifier">CClock</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CTime"><span class="hs-identifier">CTime</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>    </span><span class="annot"><a href="Foreign.C.Types.html#CUSeconds"><span class="hs-identifier">CUSeconds</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CSUSeconds"><span class="hs-identifier">CSUSeconds</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-57"></span><span>
</span><span id="line-58"></span><span>        </span><span class="hs-comment">-- extracted from CTime, because we don't want this comment in</span><span>
</span><span id="line-59"></span><span>        </span><span class="hs-comment">-- the Haskell language reports:</span><span>
</span><span id="line-60"></span><span>
</span><span id="line-61"></span><span>        </span><span class="hs-comment">-- | To convert 'CTime' to 'Data.Time.UTCTime', use the following:</span><span>
</span><span id="line-62"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-63"></span><span>        </span><span class="hs-comment">-- &gt; \t -&gt; posixSecondsToUTCTime (realToFrac t :: POSIXTime)</span><span>
</span><span id="line-64"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span>          </span><span class="annot"><span class="hs-comment">-- ** Floating types</span></span><span>
</span><span id="line-67"></span><span>          </span><span class="hs-comment">-- | These types are represented as @newtype@s of</span><span>
</span><span id="line-68"></span><span>          </span><span class="hs-comment">-- 'Prelude.Float' and 'Prelude.Double', and are instances of</span><span>
</span><span id="line-69"></span><span>          </span><span class="hs-comment">-- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read',</span><span>
</span><span id="line-70"></span><span>          </span><span class="hs-comment">-- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable', 'Storable',</span><span>
</span><span id="line-71"></span><span>          </span><span class="hs-comment">-- 'Prelude.Real', 'Prelude.Fractional', 'Prelude.Floating',</span><span>
</span><span id="line-72"></span><span>          </span><span class="hs-comment">-- 'Prelude.RealFrac' and 'Prelude.RealFloat'. That does mean</span><span>
</span><span id="line-73"></span><span>          </span><span class="hs-comment">-- that `CFloat`'s (respectively `CDouble`'s) instances of</span><span>
</span><span id="line-74"></span><span>          </span><span class="hs-comment">-- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num' and</span><span>
</span><span id="line-75"></span><span>          </span><span class="hs-comment">-- 'Prelude.Fractional' are as badly behaved as `Prelude.Float`'s</span><span>
</span><span id="line-76"></span><span>          </span><span class="hs-comment">-- (respectively `Prelude.Double`'s).</span><span>
</span><span id="line-77"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CFloat"><span class="hs-identifier">CFloat</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="Foreign.C.Types.html#CDouble"><span class="hs-identifier">CDouble</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-78"></span><span>        </span><span class="hs-comment">-- XXX GHC doesn't support CLDouble yet</span><span>
</span><span id="line-79"></span><span>        </span><span class="hs-comment">-- , CLDouble(..)</span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span>          </span><span class="hs-comment">-- See Note [Exporting constructors of marshallable foreign types]</span><span>
</span><span id="line-82"></span><span>          </span><span class="hs-comment">-- in Foreign.Ptr for why the constructors for these newtypes are</span><span>
</span><span id="line-83"></span><span>          </span><span class="hs-comment">-- exported.</span><span>
</span><span id="line-84"></span><span>
</span><span id="line-85"></span><span>          </span><span class="annot"><span class="hs-comment">-- ** Other types</span></span><span>
</span><span id="line-86"></span><span>
</span><span id="line-87"></span><span>          </span><span class="hs-comment">-- Instances of: Eq and Storable</span><span>
</span><span id="line-88"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CFile"><span class="hs-identifier">CFile</span></a></span><span class="hs-special">,</span><span>        </span><span class="annot"><a href="Foreign.C.Types.html#CFpos"><span class="hs-identifier">CFpos</span></a></span><span class="hs-special">,</span><span>     </span><span class="annot"><a href="Foreign.C.Types.html#CJmpBuf"><span class="hs-identifier">CJmpBuf</span></a></span><span>
</span><span id="line-89"></span><span>        </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Foreign.Storable.html"><span class="hs-identifier">Foreign.Storable</span></a></span><span>
</span><span id="line-92"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Bits.html"><span class="hs-identifier">Data.Bits</span></a></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="Data.Bits.html#Bits"><span class="hs-identifier">Bits</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Bits.html#FiniteBits"><span class="hs-identifier">FiniteBits</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-93"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Int.html"><span class="hs-identifier">Data.Int</span></a></span><span>         </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Int.html#Int8"><span class="hs-identifier">Int8</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Int.html#Int16"><span class="hs-identifier">Int16</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Int.html#Int32"><span class="hs-identifier">Int32</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Int.html#Int64"><span class="hs-identifier">Int64</span></a></span><span>  </span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Word.html"><span class="hs-identifier">Data.Word</span></a></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Word.html#Word8"><span class="hs-identifier">Word8</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Word.html#Word16"><span class="hs-identifier">Word16</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Word.html#Word32"><span class="hs-identifier">Word32</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Word.html#Word64"><span class="hs-identifier">Word64</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-95"></span><span>
</span><span id="line-96"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Base.html"><span class="hs-identifier">GHC.Base</span></a></span><span>
</span><span id="line-97"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Float.html"><span class="hs-identifier">GHC.Float</span></a></span><span>
</span><span id="line-98"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Enum.html"><span class="hs-identifier">GHC.Enum</span></a></span><span>
</span><span id="line-99"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Real.html"><span class="hs-identifier">GHC.Real</span></a></span><span>
</span><span id="line-100"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Show.html"><span class="hs-identifier">GHC.Show</span></a></span><span>
</span><span id="line-101"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Read.html"><span class="hs-identifier">GHC.Read</span></a></span><span>
</span><span id="line-102"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Num.html"><span class="hs-identifier">GHC.Num</span></a></span><span class="hs-cpp">

#include &quot;HsBaseConfig.h&quot;
</span><span class="hs-cpp">#include &quot;CTypes.h&quot;
</span><span>
</span><span id="line-107"></span><span class="hs-comment">-- | Haskell type representing the C @char@ type.</span><span>
</span><span id="line-108"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-109"></span><span id="CChar"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CChar</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_CHAR</span><span class="hs-special">)</span><span>
</span><span id="line-110"></span><span class="hs-comment">-- | Haskell type representing the C @signed char@ type.</span><span>
</span><span id="line-111"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-112"></span><span id="CSChar"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CSChar</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_SIGNED_CHAR</span><span class="hs-special">)</span><span>
</span><span id="line-113"></span><span class="hs-comment">-- | Haskell type representing the C @unsigned char@ type.</span><span>
</span><span id="line-114"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-115"></span><span id="CUChar"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUChar</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UNSIGNED_CHAR</span><span class="hs-special">)</span><span>
</span><span id="line-116"></span><span>
</span><span id="line-117"></span><span class="hs-comment">-- | Haskell type representing the C @short@ type.</span><span>
</span><span id="line-118"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-119"></span><span id="CShort"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CShort</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_SHORT</span><span class="hs-special">)</span><span>
</span><span id="line-120"></span><span class="hs-comment">-- | Haskell type representing the C @unsigned short@ type.</span><span>
</span><span id="line-121"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-122"></span><span id="CUShort"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUShort</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UNSIGNED_SHORT</span><span class="hs-special">)</span><span>
</span><span id="line-123"></span><span>
</span><span id="line-124"></span><span class="hs-comment">-- | Haskell type representing the C @int@ type.</span><span>
</span><span id="line-125"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-126"></span><span id="CInt"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CInt</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_INT</span><span class="hs-special">)</span><span>
</span><span id="line-127"></span><span class="hs-comment">-- | Haskell type representing the C @unsigned int@ type.</span><span>
</span><span id="line-128"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-129"></span><span id="CUInt"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUInt</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UNSIGNED_INT</span><span class="hs-special">)</span><span>
</span><span id="line-130"></span><span>
</span><span id="line-131"></span><span class="hs-comment">-- | Haskell type representing the C @long@ type.</span><span>
</span><span id="line-132"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-133"></span><span id="CLong"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CLong</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_LONG</span><span class="hs-special">)</span><span>
</span><span id="line-134"></span><span class="hs-comment">-- | Haskell type representing the C @unsigned long@ type.</span><span>
</span><span id="line-135"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-136"></span><span id="CULong"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CULong</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UNSIGNED_LONG</span><span class="hs-special">)</span><span>
</span><span id="line-137"></span><span>
</span><span id="line-138"></span><span class="hs-comment">-- | Haskell type representing the C @long long@ type.</span><span>
</span><span id="line-139"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-140"></span><span id="CLLong"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CLLong</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_LONG_LONG</span><span class="hs-special">)</span><span>
</span><span id="line-141"></span><span class="hs-comment">-- | Haskell type representing the C @unsigned long long@ type.</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-143"></span><span id="CULLong"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CULLong</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UNSIGNED_LONG_LONG</span><span class="hs-special">)</span><span>
</span><span id="line-144"></span><span>
</span><span id="line-145"></span><span class="hs-comment">-- | Haskell type representing the C @bool@ type.</span><span>
</span><span id="line-146"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-147"></span><span class="hs-comment">--</span><span>
</span><span id="line-148"></span><span class="hs-comment">-- @since 4.10.0.0</span><span>
</span><span id="line-149"></span><span class="hs-identifier">INTEGRAL_TYPE_WITH_CTYPE</span><span class="hs-special">(</span><span id="CBool"></span><span class="hs-identifier">CBool</span><span class="hs-special">,</span><span class="hs-identifier">bool</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_BOOL</span><span class="hs-special">)</span><span>
</span><span id="line-150"></span><span>
</span><span id="line-151"></span><span class="hs-pragma">{-# RULES</span><span>
</span><span id="line-152"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CChar&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526287"><span class="annot"><a href="#local-6989586621679526287"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CChar"><span class="hs-pragma hs-type">CChar</span></a></span><span>   </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526287"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-153"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CSChar&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526286"><span class="annot"><a href="#local-6989586621679526286"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CSChar"><span class="hs-pragma hs-type">CSChar</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526286"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-154"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CUChar&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526285"><span class="annot"><a href="#local-6989586621679526285"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CUChar"><span class="hs-pragma hs-type">CUChar</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526285"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-155"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CShort&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526284"><span class="annot"><a href="#local-6989586621679526284"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CShort"><span class="hs-pragma hs-type">CShort</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526284"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-156"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CUShort&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526283"><span class="annot"><a href="#local-6989586621679526283"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CUShort"><span class="hs-pragma hs-type">CUShort</span></a></span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526283"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-157"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CInt&quot;</span></span><span>    </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526282"><span class="annot"><a href="#local-6989586621679526282"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CInt"><span class="hs-pragma hs-type">CInt</span></a></span><span>    </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526282"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-158"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CUInt&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526281"><span class="annot"><a href="#local-6989586621679526281"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CUInt"><span class="hs-pragma hs-type">CUInt</span></a></span><span>   </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526281"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-159"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CLong&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526280"><span class="annot"><a href="#local-6989586621679526280"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CLong"><span class="hs-pragma hs-type">CLong</span></a></span><span>   </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526280"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-160"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CULong&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526279"><span class="annot"><a href="#local-6989586621679526279"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CULong"><span class="hs-pragma hs-type">CULong</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526279"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-161"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CLLong&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526278"><span class="annot"><a href="#local-6989586621679526278"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CLLong"><span class="hs-pragma hs-type">CLLong</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526278"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-162"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CULLong&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679526277"><span class="annot"><a href="#local-6989586621679526277"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CULLong"><span class="hs-pragma hs-type">CULLong</span></a></span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526277"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-163"></span><span>
</span><span id="line-164"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CChar-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CChar"><span class="hs-pragma hs-type">CChar</span></a></span><span>   </span><span id="local-6989586621679526276"><span class="annot"><a href="#local-6989586621679526276"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526276"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-165"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CSChar-&gt;a&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CSChar"><span class="hs-pragma hs-type">CSChar</span></a></span><span>  </span><span id="local-6989586621679526275"><span class="annot"><a href="#local-6989586621679526275"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526275"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-166"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CUChar-&gt;a&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CUChar"><span class="hs-pragma hs-type">CUChar</span></a></span><span>  </span><span id="local-6989586621679526274"><span class="annot"><a href="#local-6989586621679526274"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526274"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-167"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CShort-&gt;a&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CShort"><span class="hs-pragma hs-type">CShort</span></a></span><span>  </span><span id="local-6989586621679526273"><span class="annot"><a href="#local-6989586621679526273"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526273"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-168"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CUShort-&gt;a&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CUShort"><span class="hs-pragma hs-type">CUShort</span></a></span><span> </span><span id="local-6989586621679526272"><span class="annot"><a href="#local-6989586621679526272"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526272"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-169"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CInt-&gt;a&quot;</span></span><span>    </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CInt"><span class="hs-pragma hs-type">CInt</span></a></span><span>    </span><span id="local-6989586621679526271"><span class="annot"><a href="#local-6989586621679526271"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526271"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-170"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CUInt-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CUInt"><span class="hs-pragma hs-type">CUInt</span></a></span><span>   </span><span id="local-6989586621679526270"><span class="annot"><a href="#local-6989586621679526270"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526270"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-171"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CLong-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CLong"><span class="hs-pragma hs-type">CLong</span></a></span><span>   </span><span id="local-6989586621679526269"><span class="annot"><a href="#local-6989586621679526269"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526269"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-172"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CULong-&gt;a&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CULong"><span class="hs-pragma hs-type">CULong</span></a></span><span>  </span><span id="local-6989586621679526268"><span class="annot"><a href="#local-6989586621679526268"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526268"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-173"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CLLong-&gt;a&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CLLong"><span class="hs-pragma hs-type">CLLong</span></a></span><span>  </span><span id="local-6989586621679526267"><span class="annot"><a href="#local-6989586621679526267"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526267"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-174"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CULLong-&gt;a&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CULLong"><span class="hs-pragma hs-type">CULLong</span></a></span><span> </span><span id="local-6989586621679526266"><span class="annot"><a href="#local-6989586621679526266"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526266"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-175"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CBool-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CBool"><span class="hs-pragma hs-type">CBool</span></a></span><span>   </span><span id="local-6989586621679526265"><span class="annot"><a href="#local-6989586621679526265"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679526265"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-176"></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-177"></span><span>
</span><span id="line-178"></span><span class="hs-comment">-- | Haskell type representing the C @float@ type.</span><span>
</span><span id="line-179"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-180"></span><span id="CFloat"></span><span class="hs-identifier">FLOATING_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CFloat</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_FLOAT</span><span class="hs-special">)</span><span>
</span><span id="line-181"></span><span class="hs-comment">-- | Haskell type representing the C @double@ type.</span><span>
</span><span id="line-182"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-183"></span><span id="CDouble"></span><span class="hs-identifier">FLOATING_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CDouble</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_DOUBLE</span><span class="hs-special">)</span><span>
</span><span id="line-184"></span><span class="hs-comment">-- XXX GHC doesn't support CLDouble yet</span><span>
</span><span id="line-185"></span><span>
</span><span id="line-186"></span><span class="hs-pragma">{-# RULES</span><span>
</span><span id="line-187"></span><span class="annot"><span class="hs-pragma">&quot;realToFrac/a-&gt;CFloat&quot;</span></span><span>    </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679525462"><span class="annot"><a href="#local-6989586621679525462"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CFloat"><span class="hs-pragma hs-type">CFloat</span></a></span><span>   </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679525462"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-188"></span><span class="annot"><span class="hs-pragma">&quot;realToFrac/a-&gt;CDouble&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679525461"><span class="annot"><a href="#local-6989586621679525461"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CDouble"><span class="hs-pragma hs-type">CDouble</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679525461"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-189"></span><span>
</span><span id="line-190"></span><span class="annot"><span class="hs-pragma">&quot;realToFrac/CFloat-&gt;a&quot;</span></span><span>    </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CFloat"><span class="hs-pragma hs-type">CFloat</span></a></span><span>   </span><span id="local-6989586621679525460"><span class="annot"><a href="#local-6989586621679525460"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679525460"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-191"></span><span class="annot"><span class="hs-pragma">&quot;realToFrac/CDouble-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CDouble"><span class="hs-pragma hs-type">CDouble</span></a></span><span>  </span><span id="local-6989586621679525459"><span class="annot"><a href="#local-6989586621679525459"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#realToFrac"><span class="hs-pragma hs-type">realToFrac</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679525459"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-192"></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-193"></span><span>
</span><span id="line-194"></span><span class="hs-comment">-- GHC doesn't support CLDouble yet</span><span>
</span><span id="line-195"></span><span class="hs-comment">-- &quot;realToFrac/a-&gt;CLDouble&quot;  realToFrac = \x -&gt; CLDouble (realToFrac x)</span><span>
</span><span id="line-196"></span><span class="hs-comment">-- &quot;realToFrac/CLDouble-&gt;a&quot;  realToFrac = \(CLDouble x) -&gt; realToFrac x</span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span class="hs-comment">-- | Haskell type representing the C @ptrdiff_t@ type.</span><span>
</span><span id="line-199"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-200"></span><span id="CPtrdiff"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CPtrdiff</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_PTRDIFF_T</span><span class="hs-special">)</span><span>
</span><span id="line-201"></span><span class="hs-comment">-- | Haskell type representing the C @size_t@ type.</span><span>
</span><span id="line-202"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-203"></span><span id="CSize"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CSize</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_SIZE_T</span><span class="hs-special">)</span><span>
</span><span id="line-204"></span><span class="hs-comment">-- | Haskell type representing the C @wchar_t@ type.</span><span>
</span><span id="line-205"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-206"></span><span id="CWchar"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CWchar</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_WCHAR_T</span><span class="hs-special">)</span><span>
</span><span id="line-207"></span><span class="hs-comment">-- | Haskell type representing the C @sig_atomic_t@ type.</span><span>
</span><span id="line-208"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-209"></span><span id="CSigAtomic"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CSigAtomic</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_SIG_ATOMIC_T</span><span class="hs-special">)</span><span>
</span><span id="line-210"></span><span>
</span><span id="line-211"></span><span class="hs-pragma">{-# RULES</span><span>
</span><span id="line-212"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CPtrdiff&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679524166"><span class="annot"><a href="#local-6989586621679524166"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CPtrdiff"><span class="hs-pragma hs-type">CPtrdiff</span></a></span><span>   </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524166"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-213"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CSize&quot;</span></span><span>      </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679524165"><span class="annot"><a href="#local-6989586621679524165"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CSize"><span class="hs-pragma hs-type">CSize</span></a></span><span>      </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524165"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-214"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CWchar&quot;</span></span><span>     </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679524164"><span class="annot"><a href="#local-6989586621679524164"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CWchar"><span class="hs-pragma hs-type">CWchar</span></a></span><span>     </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524164"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-215"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CSigAtomic&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679524163"><span class="annot"><a href="#local-6989586621679524163"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CSigAtomic"><span class="hs-pragma hs-type">CSigAtomic</span></a></span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524163"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-216"></span><span>
</span><span id="line-217"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CPtrdiff-&gt;a&quot;</span></span><span>   </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CPtrdiff"><span class="hs-pragma hs-type">CPtrdiff</span></a></span><span>   </span><span id="local-6989586621679524162"><span class="annot"><a href="#local-6989586621679524162"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524162"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-218"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CSize-&gt;a&quot;</span></span><span>      </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CSize"><span class="hs-pragma hs-type">CSize</span></a></span><span>      </span><span id="local-6989586621679524161"><span class="annot"><a href="#local-6989586621679524161"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524161"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-219"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CWchar-&gt;a&quot;</span></span><span>     </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CWchar"><span class="hs-pragma hs-type">CWchar</span></a></span><span>     </span><span id="local-6989586621679524160"><span class="annot"><a href="#local-6989586621679524160"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524160"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-220"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/CSigAtomic-&gt;a&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span class="hs-pragma">(</span><span class="annot"><a href="Foreign.C.Types.html#CSigAtomic"><span class="hs-pragma hs-type">CSigAtomic</span></a></span><span> </span><span id="local-6989586621679524159"><span class="annot"><a href="#local-6989586621679524159"><span class="hs-pragma hs-var">x</span></a></span></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679524159"><span class="hs-pragma hs-type">x</span></a></span><span>
</span><span id="line-221"></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-222"></span><span>
</span><span id="line-223"></span><span class="hs-comment">-- | Haskell type representing the C @clock_t@ type.</span><span>
</span><span id="line-224"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-225"></span><span id="CClock"></span><span class="hs-identifier">ARITHMETIC_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CClock</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_CLOCK_T</span><span class="hs-special">)</span><span>
</span><span id="line-226"></span><span class="hs-comment">-- | Haskell type representing the C @time_t@ type.</span><span>
</span><span id="line-227"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-228"></span><span id="CTime"></span><span class="hs-identifier">ARITHMETIC_TYPE</span><span class="hs-special">(</span><span id="CTime"><span class="annot"><a href="Foreign.C.Types.html#CTime"><span class="hs-identifier hs-var">CTime</span></a></span></span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_TIME_T</span><span class="hs-special">)</span><span>
</span><span id="line-229"></span><span class="hs-comment">-- | Haskell type representing the C @useconds_t@ type.</span><span>
</span><span id="line-230"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-231"></span><span class="hs-comment">--</span><span>
</span><span id="line-232"></span><span class="hs-comment">-- @since 4.4.0.0</span><span>
</span><span id="line-233"></span><span>
</span><span id="line-234"></span><span id="CUSeconds"></span><span class="hs-identifier">ARITHMETIC_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUSeconds</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_USECONDS_T</span><span class="hs-special">)</span><span>
</span><span id="line-235"></span><span class="hs-comment">-- | Haskell type representing the C @suseconds_t@ type.</span><span>
</span><span id="line-236"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-237"></span><span class="hs-comment">--</span><span>
</span><span id="line-238"></span><span class="hs-comment">-- @since 4.4.0.0</span><span>
</span><span id="line-239"></span><span id="CSUSeconds"></span><span class="hs-identifier">ARITHMETIC_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CSUSeconds</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_SUSECONDS_T</span><span class="hs-special">)</span><span>
</span><span id="line-240"></span><span>
</span><span id="line-241"></span><span class="hs-comment">-- FIXME: Implement and provide instances for Eq and Storable</span><span>
</span><span id="line-242"></span><span class="hs-comment">-- | Haskell type representing the C @FILE@ type.</span><span>
</span><span id="line-243"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-244"></span><span class="hs-keyword">data</span><span> </span><span id="CFile"><span class="annot"><a href="Foreign.C.Types.html#CFile"><span class="hs-identifier hs-var">CFile</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CFile"><span class="annot"><a href="Foreign.C.Types.html#CFile"><span class="hs-identifier hs-var">CFile</span></a></span></span><span>
</span><span id="line-245"></span><span class="hs-comment">-- | Haskell type representing the C @fpos_t@ type.</span><span>
</span><span id="line-246"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-247"></span><span class="hs-keyword">data</span><span> </span><span id="CFpos"><span class="annot"><a href="Foreign.C.Types.html#CFpos"><span class="hs-identifier hs-var">CFpos</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CFpos"><span class="annot"><a href="Foreign.C.Types.html#CFpos"><span class="hs-identifier hs-var">CFpos</span></a></span></span><span>
</span><span id="line-248"></span><span class="hs-comment">-- | Haskell type representing the C @jmp_buf@ type.</span><span>
</span><span id="line-249"></span><span class="hs-comment">-- /(The concrete types of &quot;Foreign.C.Types#platform&quot; are platform-specific.)/</span><span>
</span><span id="line-250"></span><span class="hs-keyword">data</span><span> </span><span id="CJmpBuf"><span class="annot"><a href="Foreign.C.Types.html#CJmpBuf"><span class="hs-identifier hs-var">CJmpBuf</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CJmpBuf"><span class="annot"><a href="Foreign.C.Types.html#CJmpBuf"><span class="hs-identifier hs-var">CJmpBuf</span></a></span></span><span>
</span><span id="line-251"></span><span>
</span><span id="line-252"></span><span id="CIntPtr"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CIntPtr</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_INTPTR_T</span><span class="hs-special">)</span><span>
</span><span id="line-253"></span><span id="CUIntPtr"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUIntPtr</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UINTPTR_T</span><span class="hs-special">)</span><span>
</span><span id="line-254"></span><span id="CIntMax"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CIntMax</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_INTMAX_T</span><span class="hs-special">)</span><span>
</span><span id="line-255"></span><span id="CUIntMax"></span><span class="hs-identifier">INTEGRAL_TYPE</span><span class="hs-special">(</span><span class="hs-identifier">CUIntMax</span><span class="hs-special">,</span><span class="hs-identifier">HTYPE_UINTMAX_T</span><span class="hs-special">)</span><span>
</span><span id="line-256"></span><span>
</span><span id="line-257"></span><span class="hs-pragma">{-# RULES</span><span>
</span><span id="line-258"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CIntPtr&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679522163"><span class="annot"><a href="#local-6989586621679522163"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CIntPtr"><span class="hs-pragma hs-type">CIntPtr</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679522163"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-259"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CUIntPtr&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679522162"><span class="annot"><a href="#local-6989586621679522162"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CUIntPtr"><span class="hs-pragma hs-type">CUIntPtr</span></a></span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679522162"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-260"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CIntMax&quot;</span></span><span>  </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679522161"><span class="annot"><a href="#local-6989586621679522161"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CIntMax"><span class="hs-pragma hs-type">CIntMax</span></a></span><span>  </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679522161"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-261"></span><span class="annot"><span class="hs-pragma">&quot;fromIntegral/a-&gt;CUIntMax&quot;</span></span><span> </span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="hs-pragma">=</span><span> </span><span class="hs-pragma">\</span><span id="local-6989586621679522160"><span class="annot"><a href="#local-6989586621679522160"><span class="hs-pragma hs-var">x</span></a></span></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="Foreign.C.Types.html#CUIntMax"><span class="hs-pragma hs-type">CUIntMax</span></a></span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="GHC.Real.html#fromIntegral"><span class="hs-pragma hs-type">fromIntegral</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679522160"><span class="hs-pragma hs-type">x</span></a></span><span class="hs-pragma">)</span><span>
</span><span id="line-262"></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-263"></span><span>
</span><span id="line-264"></span><span class="hs-comment">-- C99 types which are still missing include:</span><span>
</span><span id="line-265"></span><span class="hs-comment">-- wint_t, wctrans_t, wctype_t</span><span>
</span><span id="line-266"></span><span>
</span><span id="line-267"></span><span class="hs-comment">{- $ctypes

These types are needed to accurately represent C function prototypes,
in order to access C library interfaces in Haskell.  The Haskell system
is not required to represent those types exactly as C does, but the
following guarantees are provided concerning a Haskell type @CT@
representing a C type @t@:

* If a C function prototype has @t@ as an argument or result type, the
  use of @CT@ in the corresponding position in a foreign declaration
  permits the Haskell program to access the full range of values encoded
  by the C type; and conversely, any Haskell value for @CT@ has a valid
  representation in C.

* @'sizeOf' ('Prelude.undefined' :: CT)@ will yield the same value as
  @sizeof (t)@ in C.

* @'alignment' ('Prelude.undefined' :: CT)@ matches the alignment
  constraint enforced by the C implementation for @t@.

* The members 'peek' and 'poke' of the 'Storable' class map all values
  of @CT@ to the corresponding value of @t@ and vice versa.

* When an instance of 'Prelude.Bounded' is defined for @CT@, the values
  of 'Prelude.minBound' and 'Prelude.maxBound' coincide with @t_MIN@
  and @t_MAX@ in C.

* When an instance of 'Prelude.Eq' or 'Prelude.Ord' is defined for @CT@,
  the predicates defined by the type class implement the same relation
  as the corresponding predicate in C on @t@.

* When an instance of 'Prelude.Num', 'Prelude.Read', 'Prelude.Integral',
  'Prelude.Fractional', 'Prelude.Floating', 'Prelude.RealFrac', or
  'Prelude.RealFloat' is defined for @CT@, the arithmetic operations
  defined by the type class implement the same function as the
  corresponding arithmetic operations (if available) in C on @t@.

* When an instance of 'Bits' is defined for @CT@, the bitwise operation
  defined by the type class implement the same function as the
  corresponding bitwise operation in C on @t@.

-}</span><span>
</span><span id="line-309"></span><span>
</span><span id="line-310"></span></pre></body></html>